package com.example.hs.Service;

import com.example.hs.DTO.CategoryDTO;
import com.example.hs.Pojo.Category;
import com.example.hs.Repository.CategoryRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class CategoryService {

    @Autowired
    private CategoryRepository categoryRepository;

    // 获取所有一级分类及其包含的二级分类，并转换为 DTO
    public List<CategoryDTO> getAllFirstLevelCategoriesWithChildren() {
        // 获取所有一级分类及其子分类
        List<Category> categories = categoryRepository.findAllFirstLevelCategoriesWithChildren();

        // 将 Category 对象转换为 CategoryDTO 对象
        return categories.stream()
                .map(this::convertToDTO)
                .collect(Collectors.toList());
    }

    private CategoryDTO convertToDTO(Category category) {
        // 如果有子分类，则递归转换子分类为 DTO
        List<CategoryDTO> childrenDTOs = category.getChildren() != null && !category.getChildren().isEmpty()
                ? category.getChildren().stream().map(this::convertToDTO).collect(Collectors.toList())
                : null;

        // 创建并返回 CategoryDTO 对象
        return new CategoryDTO(
                category.getCategory_id(),
                category.getName(),
                childrenDTOs,
                category.getPrice()
        );
    }
}